package pe.com.bbva.modpre.dominio.drools;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import pe.com.bbva.modpre.dominio.TipoBanca;
import pe.com.bbva.modpre.utileria.ModpreUtil;

@SuppressWarnings("serial")
public class Motor implements Serializable{

	private BigDecimal tea;
	private BigDecimal rar;
	private BigDecimal cr;
	private BigDecimal cadic;
	private BigDecimal tipoImpositivo;
	private BigDecimal pe;
	private BigDecimal ratioEficiencia;
	private BigDecimal comisiones;
	private BigDecimal cf;
	private Long moneda;
	private Long grupo;
	private BigDecimal valorCliente;
	private BigDecimal valorClienteRar;
	private BigDecimal scoreVinculado;
	private BigDecimal scoreVinculadoRar;
	private Long montoAgrupado;
	private BigDecimal tasaMinima;
	private BigDecimal tasaMaxima;
	private BigDecimal ventasTotales;
	private String segmentoCliente;
	private BigDecimal cantidadFamiliaProductos;
	private BigDecimal flujoPagoProveedores;
	private BigDecimal margenTotal;
	private BigDecimal flujoPagoHaberes;
	private BigDecimal saldoMedioPasivo;
	private String escalaRating;
	private BigDecimal plazo;
	
	private BigDecimal margenOrdinario;
	private BigDecimal saldoMedioActivo;
	private Boolean esPagoHabiente;
	private BigDecimal cuotaRiesgo;
	private BigDecimal margenMix;
	private BigDecimal deudaHipotecaria;
	private BigDecimal deudaConsumo;
	private BigDecimal lineaMaximaTarjetaCredito;
	private Boolean esRepresentanteTop;
	private String ubigeoDireccionCliente;
	private BigDecimal hipotecario;
	private BigDecimal spreadHipotecario;
	private BigDecimal consumo;
	private BigDecimal spreadConsumo;
	private BigDecimal tarjetaCredito;
	private BigDecimal spreadTarjetaCredito;
	private BigDecimal puntajeBuro;
	private BigDecimal antiguedadCliente;
	private BigDecimal ingreso;
	private BigDecimal peso;
	private BigDecimal ltv;
	private BigDecimal vivienda;
	private BigDecimal viviendaDivisa;
	private BigDecimal valorComercialActual;
	private BigDecimal valorComercialPotencial;
	private Long codigoViviendaDivisa;
	private Long codigoLtv;
	
	private BigDecimal puntoOptimo;
	private TipoBanca tipoBanca;
	private Date fechaCf;
	private BigDecimal plazoCf;
	private BigDecimal plazoCrPe;
	
	private StringBuilder reglaError;
	
	private String codigoUsuario;
	private String codigoCentroCosto;
	private String codigoProducto;
	private String nombreProducto;
	private String nombreCortoProducto;
	private String codigoGrupoProducto;
	private String nombreGrupoProducto;
	private BigDecimal monto;
	private String codigoTipoPlazo;
	private String nombreTipoPlazo;
	private String codigoMoneda;
	private String nombreMoneda;
	private String codigoSegmento;
	private String nombreSegmento;
	
	
	public BigDecimal getTea() {
		return tea;
	}
	public void setTea(BigDecimal tea) {
		this.tea = tea;
	}
	public BigDecimal getRar() {
		return rar;
	}
	public void setRar(BigDecimal rar) {
		this.rar = rar;
	}
	public BigDecimal getCr() {
		return cr;
	}
	public void setCr(BigDecimal cr) {
		this.cr = cr;
	}
	public BigDecimal getCadic() {
		return cadic;
	}
	public void setCadic(BigDecimal cadic) {
		this.cadic = cadic;
	}
	public BigDecimal getTipoImpositivo() {
		return tipoImpositivo;
	}
	public void setTipoImpositivo(BigDecimal tipoImpositivo) {
		this.tipoImpositivo = tipoImpositivo;
	}
	public BigDecimal getPe() {
		return pe;
	}
	public void setPe(BigDecimal pe) {
		this.pe = pe;
	}
	public BigDecimal getRatioEficiencia() {
		return ratioEficiencia;
	}
	public void setRatioEficiencia(BigDecimal ratioEficiencia) {
		this.ratioEficiencia = ratioEficiencia;
	}
	public BigDecimal getComisiones() {
		return comisiones;
	}
	public void setComisiones(BigDecimal comisiones) {
		this.comisiones = comisiones;
	}
	public BigDecimal getCf() {
		return cf;
	}
	public void setCf(BigDecimal cf) {
		this.cf = cf;
	}
	public Long getMoneda() {
		return moneda;
	}
	public void setMoneda(Long moneda) {
		this.moneda = moneda;
	}
	public Long getGrupo() {
		return grupo;
	}
	public void setGrupo(Long grupo) {
		this.grupo = grupo;
	}
	public BigDecimal getValorCliente() {
		return valorCliente;
	}
	public void setValorCliente(BigDecimal valorCliente) {
		this.valorCliente = valorCliente;
	}
	public BigDecimal getValorClienteRar() {
		return valorClienteRar;
	}
	public void setValorClienteRar(BigDecimal valorClienteRar) {
		this.valorClienteRar = valorClienteRar;
	}
	public BigDecimal getScoreVinculado() {
		return scoreVinculado;
	}
	public void setScoreVinculado(BigDecimal scoreVinculado) {
		this.scoreVinculado = scoreVinculado;
	}
	public BigDecimal getScoreVinculadoRar() {
		return scoreVinculadoRar;
	}
	public void setScoreVinculadoRar(BigDecimal scoreVinculadoRar) {
		this.scoreVinculadoRar = scoreVinculadoRar;
	}
	public Long getMontoAgrupado() {
		return montoAgrupado;
	}
	public BigDecimal getPlazoCrPe() {
		return plazoCrPe;
	}
	public void setPlazoCrPe(BigDecimal plazoCrPe) {
		this.plazoCrPe = plazoCrPe;
	}
	public void setMontoAgrupado(Long montoAgrupado) {
		this.montoAgrupado = montoAgrupado;
	}
	public BigDecimal getTasaMinima() {
		return tasaMinima;
	}
	public void setTasaMinima(BigDecimal tasaMinima) {
		this.tasaMinima = tasaMinima;
	}
	public BigDecimal getTasaMaxima() {
		return tasaMaxima;
	}
	public void setTasaMaxima(BigDecimal tasaMaxima) {
		this.tasaMaxima = tasaMaxima;
	}
	public BigDecimal getVentasTotales() {
		return ventasTotales;
	}
	public void setVentasTotales(BigDecimal ventasTotales) {
		this.ventasTotales = ventasTotales;
	}
	public String getSegmentoCliente() {
		return segmentoCliente;
	}
	public void setSegmentoCliente(String segmentoCliente) {
		this.segmentoCliente = segmentoCliente;
	}
	public BigDecimal getCantidadFamiliaProductos() {
		return cantidadFamiliaProductos;
	}
	public void setCantidadFamiliaProductos(BigDecimal cantidadFamiliaProductos) {
		this.cantidadFamiliaProductos = cantidadFamiliaProductos;
	}
	public BigDecimal getFlujoPagoProveedores() {
		return flujoPagoProveedores;
	}
	public void setFlujoPagoProveedores(BigDecimal flujoPagoProveedores) {
		this.flujoPagoProveedores = flujoPagoProveedores;
	}
	public BigDecimal getMargenTotal() {
		return margenTotal;
	}
	public void setMargenTotal(BigDecimal margenTotal) {
		this.margenTotal = margenTotal;
	}
	public BigDecimal getFlujoPagoHaberes() {
		return flujoPagoHaberes;
	}
	public void setFlujoPagoHaberes(BigDecimal flujoPagoHaberes) {
		this.flujoPagoHaberes = flujoPagoHaberes;
	}
	public BigDecimal getSaldoMedioPasivo() {
		return saldoMedioPasivo;
	}
	public void setSaldoMedioPasivo(BigDecimal saldoMedioPasivo) {
		this.saldoMedioPasivo = saldoMedioPasivo;
	}
	public String getEscalaRating() {
		return escalaRating;
	}
	public void setEscalaRating(String escalaRating) {
		this.escalaRating = escalaRating;
	}
	public BigDecimal getPlazo() {
		return plazo;
	}
	public void setPlazo(BigDecimal plazo) {
		this.plazo = plazo;
	}
	public BigDecimal getMargenOrdinario() {
		return margenOrdinario;
	}
	public void setMargenOrdinario(BigDecimal margenOrdinario) {
		this.margenOrdinario = margenOrdinario;
	}
	public BigDecimal getSaldoMedioActivo() {
		return saldoMedioActivo;
	}
	public void setSaldoMedioActivo(BigDecimal saldoMedioActivo) {
		this.saldoMedioActivo = saldoMedioActivo;
	}
	public Boolean getEsPagoHabiente() {
		return esPagoHabiente;
	}
	public void setEsPagoHabiente(Boolean esPagoHabiente) {
		this.esPagoHabiente = esPagoHabiente;
	}
	public BigDecimal getCuotaRiesgo() {
		return cuotaRiesgo;
	}
	public void setCuotaRiesgo(BigDecimal cuotaRiesgo) {
		this.cuotaRiesgo = cuotaRiesgo;
	}
	public BigDecimal getMargenMix() {
		return margenMix;
	}
	public void setMargenMix(BigDecimal margenMix) {
		this.margenMix = margenMix;
	}
	public BigDecimal getDeudaHipotecaria() {
		return deudaHipotecaria;
	}
	public void setDeudaHipotecaria(BigDecimal deudaHipotecaria) {
		this.deudaHipotecaria = deudaHipotecaria;
	}
	public BigDecimal getDeudaConsumo() {
		return deudaConsumo;
	}
	public void setDeudaConsumo(BigDecimal deudaConsumo) {
		this.deudaConsumo = deudaConsumo;
	}
	public BigDecimal getLineaMaximaTarjetaCredito() {
		return lineaMaximaTarjetaCredito;
	}
	public void setLineaMaximaTarjetaCredito(BigDecimal lineaMaximaTarjetaCredito) {
		this.lineaMaximaTarjetaCredito = lineaMaximaTarjetaCredito;
	}
	public Boolean getEsRepresentanteTop() {
		return esRepresentanteTop;
	}
	public void setEsRepresentanteTop(Boolean esRepresentanteTop) {
		this.esRepresentanteTop = esRepresentanteTop;
	}
	public String getUbigeoDireccionCliente() {
		return ubigeoDireccionCliente;
	}
	public void setUbigeoDireccionCliente(String ubigeoDireccionCliente) {
		this.ubigeoDireccionCliente = ubigeoDireccionCliente;
	}
	public BigDecimal getHipotecario() {
		return hipotecario;
	}
	public void setHipotecario(BigDecimal hipotecario) {
		this.hipotecario = hipotecario;
	}
	public BigDecimal getSpreadHipotecario() {
		return spreadHipotecario;
	}
	public void setSpreadHipotecario(BigDecimal spreadHipotecario) {
		this.spreadHipotecario = spreadHipotecario;
	}
	public BigDecimal getConsumo() {
		return consumo;
	}
	public void setConsumo(BigDecimal consumo) {
		this.consumo = consumo;
	}
	public BigDecimal getSpreadConsumo() {
		return spreadConsumo;
	}
	public void setSpreadConsumo(BigDecimal spreadConsumo) {
		this.spreadConsumo = spreadConsumo;
	}
	public BigDecimal getTarjetaCredito() {
		return tarjetaCredito;
	}
	public void setTarjetaCredito(BigDecimal tarjetaCredito) {
		this.tarjetaCredito = tarjetaCredito;
	}
	public BigDecimal getSpreadTarjetaCredito() {
		return spreadTarjetaCredito;
	}
	public void setSpreadTarjetaCredito(BigDecimal spreadTarjetaCredito) {
		this.spreadTarjetaCredito = spreadTarjetaCredito;
	}
	public BigDecimal getPuntajeBuro() {
		return puntajeBuro;
	}
	public void setPuntajeBuro(BigDecimal puntajeBuro) {
		this.puntajeBuro = puntajeBuro;
	}
	public BigDecimal getAntiguedadCliente() {
		return antiguedadCliente;
	}
	public void setAntiguedadCliente(BigDecimal antiguedadCliente) {
		this.antiguedadCliente = antiguedadCliente;
	}
	public BigDecimal getIngreso() {
		return ingreso;
	}
	public void setIngreso(BigDecimal ingreso) {
		this.ingreso = ingreso;
	}
	public BigDecimal getPeso() {
		return peso;
	}
	public void setPeso(BigDecimal peso) {
		this.peso = peso;
	}
	public BigDecimal getLtv() {
		return ltv;
	}
	public void setLtv(BigDecimal ltv) {
		this.ltv = ltv;
	}
	public BigDecimal getVivienda() {
		return vivienda;
	}
	public void setVivienda(BigDecimal vivienda) {
		this.vivienda = vivienda;
	}
	public BigDecimal getViviendaDivisa() {
		return viviendaDivisa;
	}
	public void setViviendaDivisa(BigDecimal viviendaDivisa) {
		this.viviendaDivisa = viviendaDivisa;
	}
	public BigDecimal getValorComercialActual() {
		return valorComercialActual;
	}
	public void setValorComercialActual(BigDecimal valorComercialActual) {
		this.valorComercialActual = valorComercialActual;
	}
	public BigDecimal getValorComercialPotencial() {
		return valorComercialPotencial;
	}
	public void setValorComercialPotencial(BigDecimal valorComercialPotencial) {
		this.valorComercialPotencial = valorComercialPotencial;
	}
	public Long getCodigoViviendaDivisa() {
		return codigoViviendaDivisa;
	}
	public void setCodigoViviendaDivisa(Long codigoViviendaDivisa) {
		this.codigoViviendaDivisa = codigoViviendaDivisa;
	}
	public Long getCodigoLtv() {
		return codigoLtv;
	}
	public void setCodigoLtv(Long codigoLtv) {
		this.codigoLtv = codigoLtv;
	}
	public BigDecimal getPuntoOptimo() {
		return puntoOptimo;
	}
	public void setPuntoOptimo(BigDecimal puntoOptimo) {
		this.puntoOptimo = puntoOptimo;
	}
	public TipoBanca getTipoBanca() {
		return tipoBanca;
	}
	public void setTipoBanca(TipoBanca tipoBanca) {
		this.tipoBanca = tipoBanca;
	}
	public BigDecimal numero(String numero){
		return new BigDecimal(numero);
	}
	public Date getFechaCf() {
		return fechaCf;
	}
	public void setFechaCf(Date fechaCf) {
		this.fechaCf = fechaCf;
	}
	public BigDecimal getPlazoCf() {
		return plazoCf;
	}
	public void setPlazoCf(BigDecimal plazoCf) {
		this.plazoCf = plazoCf;
	}
	public BigDecimal sum(BigDecimal numero1, BigDecimal numero2){
		if(numero1==null){
			numero1=BigDecimal.ZERO;
		}
		if(numero2==null){
			numero2=BigDecimal.ZERO;
		}
		return numero1.add(numero2);
	}
	public BigDecimal res(BigDecimal numero1, BigDecimal numero2){
		if(numero1==null){
			numero1=BigDecimal.ZERO;
		}
		if(numero2==null){
			numero2=BigDecimal.ZERO;
		}
		return numero1.subtract(numero2);
	}
	public BigDecimal mul(BigDecimal numero1, BigDecimal numero2){
		if(numero1==null){
			numero1=BigDecimal.ZERO;
		}
		if(numero2==null){
			numero2=BigDecimal.ZERO;
		}
		return numero1.multiply(numero2);
	}
	public BigDecimal div(BigDecimal numero1, BigDecimal numero2,int decimal){
		if(numero1==null){
			numero1=BigDecimal.ZERO;
		}
		if(numero2==null){
			numero2=BigDecimal.ZERO;
		}
		numero1=numero1.divide(numero2,decimal, BigDecimal.ROUND_CEILING);
		return numero1;
	}
	public BigDecimal max(BigDecimal numero1, BigDecimal numero2){
		if(numero1==null){
			numero1=BigDecimal.ZERO;
		}
		if(numero2==null){
			numero2=BigDecimal.ZERO;
		}
		if(ModpreUtil.esMayor(numero1, numero2)){
			return numero1;
		}
		if(ModpreUtil.esMayor(numero2, numero1)){
			return numero2;
		}
		return BigDecimal.ZERO;
	}
	public void addError(String error){
		if(reglaError==null){
			reglaError=new StringBuilder();
			reglaError.append(error);
		}else{
			reglaError.append("<br>").append(error);
		}
	}
	public String getReglaError() {
		if(reglaError!=null){
			return reglaError.toString();
		}
		return null;
	}
	
	
	
	
	public String getCodigoUsuario() {
		return codigoUsuario;
	}
	public void setCodigoUsuario(String codigoUsuario) {
		this.codigoUsuario = codigoUsuario;
	}
	public String getCodigoCentroCosto() {
		return codigoCentroCosto;
	}
	public void setCodigoCentroCosto(String codigoCentroCosto) {
		this.codigoCentroCosto = codigoCentroCosto;
	}
	public String getCodigoProducto() {
		return codigoProducto;
	}
	public void setCodigoProducto(String codigoProducto) {
		this.codigoProducto = codigoProducto;
	}
	public String getNombreProducto() {
		return nombreProducto;
	}
	public void setNombreProducto(String nombreProducto) {
		this.nombreProducto = nombreProducto;
	}
	public BigDecimal getMonto() {
		return monto;
	}
	public void setMonto(BigDecimal monto) {
		this.monto = monto;
	}
	public String getCodigoTipoPlazo() {
		return codigoTipoPlazo;
	}
	public void setCodigoTipoPlazo(String codigoTipoPlazo) {
		this.codigoTipoPlazo = codigoTipoPlazo;
	}
	public String getNombreTipoPlazo() {
		return nombreTipoPlazo;
	}
	public void setNombreTipoPlazo(String nombreTipoPlazo) {
		this.nombreTipoPlazo = nombreTipoPlazo;
	}
	
	public String getNombreCortoProducto() {
		return nombreCortoProducto;
	}
	public void setNombreCortoProducto(String nombreCortoProducto) {
		this.nombreCortoProducto = nombreCortoProducto;
	}
	public String getCodigoGrupoProducto() {
		return codigoGrupoProducto;
	}
	public void setCodigoGrupoProducto(String codigoGrupoProducto) {
		this.codigoGrupoProducto = codigoGrupoProducto;
	}
	public String getNombreGrupoProducto() {
		return nombreGrupoProducto;
	}
	public void setNombreGrupoProducto(String nombreGrupoProducto) {
		this.nombreGrupoProducto = nombreGrupoProducto;
	}
	
	public String getCodigoMoneda() {
		return codigoMoneda;
	}
	public void setCodigoMoneda(String codigoMoneda) {
		this.codigoMoneda = codigoMoneda;
	}
	public String getNombreMoneda() {
		return nombreMoneda;
	}
	public void setNombreMoneda(String nombreMoneda) {
		this.nombreMoneda = nombreMoneda;
	}
	public String getNombreSegmento() {
		return nombreSegmento;
	}
	public void setNombreSegmento(String nombreSegmento) {
		this.nombreSegmento = nombreSegmento;
	}
	public String getCodigoSegmento() {
		return codigoSegmento;
	}
	public void setCodigoSegmento(String codigoSegmento) {
		this.codigoSegmento = codigoSegmento;
	}
	@Override
	public String toString() {
		return "Motor [tea=" + tea + ", rar=" + rar + ", cr=" + cr + ", cadic="
				+ cadic + ", tipoImpositivo=" + tipoImpositivo + ", pe=" + pe
				+ ", ratioEficiencia=" + ratioEficiencia + ", comisiones="
				+ comisiones + ", cf=" + cf + ", moneda=" + moneda + ", grupo="
				+ grupo + ", valorCliente=" + valorCliente
				+ ", valorClienteRar=" + valorClienteRar + ", scoreVinculado="
				+ scoreVinculado + ", scoreVinculadoRar=" + scoreVinculadoRar
				+ ", montoAgrupado=" + montoAgrupado + ", tasaMinima="
				+ tasaMinima + ", tasaMaxima=" + tasaMaxima
				+ ", ventasTotales=" + ventasTotales + ", segmentoCliente="
				+ segmentoCliente + ", cantidadFamiliaProductos="
				+ cantidadFamiliaProductos + ", flujoPagoProveedores="
				+ flujoPagoProveedores + ", margenTotal=" + margenTotal
				+ ", flujoPagoHaberes=" + flujoPagoHaberes
				+ ", saldoMedioPasivo=" + saldoMedioPasivo + ", escalaRating="
				+ escalaRating + ", plazo=" + plazo + ", margenOrdinario="
				+ margenOrdinario + ", saldoMedioActivo=" + saldoMedioActivo
				+ ", esPagoHabiente=" + esPagoHabiente + ", cuotaRiesgo="
				+ cuotaRiesgo + ", margenMix=" + margenMix
				+ ", deudaHipotecaria=" + deudaHipotecaria + ", deudaConsumo="
				+ deudaConsumo + ", lineaMaximaTarjetaCredito="
				+ lineaMaximaTarjetaCredito + ", esRepresentanteTop="
				+ esRepresentanteTop + ", ubigeoDireccionCliente="
				+ ubigeoDireccionCliente + ", hipotecario=" + hipotecario
				+ ", spreadHipotecario=" + spreadHipotecario + ", consumo="
				+ consumo + ", spreadConsumo=" + spreadConsumo
				+ ", tarjetaCredito=" + tarjetaCredito
				+ ", spreadTarjetaCredito=" + spreadTarjetaCredito
				+ ", puntajeBuro=" + puntajeBuro + ", antiguedadCliente="
				+ antiguedadCliente + ", ingreso=" + ingreso + ", peso=" + peso
				+ ", ltv=" + ltv + ", vivienda=" + vivienda
				+ ", viviendaDivisa=" + viviendaDivisa
				+ ", valorComercialActual=" + valorComercialActual
				+ ", valorComercialPotencial=" + valorComercialPotencial
				+ ", codigoViviendaDivisa=" + codigoViviendaDivisa
				+ ", codigoLtv=" + codigoLtv + ", puntoOptimo=" + puntoOptimo
				+ ", tipoBanca=" + tipoBanca + ", fechaCf=" + fechaCf
				+ ", plazoCf=" + plazoCf + ", plazoCrPe=" + plazoCrPe
				+ ", reglaError=" + reglaError + ", codigoUsuario="
				+ codigoUsuario + ", codigoCentroCosto=" + codigoCentroCosto
				+ ", codigoProducto=" + codigoProducto + ", nombreProducto="
				+ nombreProducto + ", nombreCortoProducto="
				+ nombreCortoProducto + ", codigoGrupoProducto="
				+ codigoGrupoProducto + ", nombreGrupoProducto="
				+ nombreGrupoProducto + ", monto=" + monto
				+ ", codigoTipoPlazo=" + codigoTipoPlazo + ", nombreTipoPlazo="
				+ nombreTipoPlazo + ", codigoMoneda=" + codigoMoneda
				+ ", nombreMoneda=" + nombreMoneda + ", codigoSegmento="
				+ codigoSegmento + ", nombreSegmento=" + nombreSegmento + "]";
	}
	
	
	
}

